#include "Wejscie.h"

Wejscie::Wejscie(std::string nazwaPliku)
{
	_plik.open(nazwaPliku);
}
Wejscie::~Wejscie()
{
	_plik.close();
}

void Wejscie::Wczytaj(int &rodzaj, int &id, int &v1, int &v2, double &wartosc)
{
	std::string tmp;

	_plik >> tmp;

	if(_plik.eof())
	{
		std::string wyjatek = "Koniec wczytywania pliku";
		throw wyjatek;
	}

	if(tmp.at(0) == 'R' || tmp.at(0) == 'r') rodzaj = 0;
	else if(tmp.at(0) == 'E' || tmp.at(0) == 'e') rodzaj = 1;
	else if(tmp.at(0) == 'I' || tmp.at(0) == 'i') rodzaj = 2;
	else
	{
		NieznanyElement wyjatek(tmp.at(0));
		throw wyjatek;
	}

	id = atoi(tmp.substr(1, tmp.find('\t')).c_str());
	if(id < 0)
	{
		UjemneID wyjatek(tmp);
		throw wyjatek;
	}

	_plik >> v1;
	if(v1 < 0)
	{
		char tmp[10];
		_itoa_s(v1,tmp,10);
		UjemneID wyjatek(tmp);
		throw wyjatek;
	}
	_plik >> v2;
	if(v2 < 0)
	{
		char tmp[10];
		_itoa_s(v2,tmp,10);
		UjemneID wyjatek(tmp);
		throw wyjatek;
	}

	if(v1 == v2)
	{
		IdentyczneWezly wyjatek(tmp);
		throw wyjatek;
	}
	_plik >> wartosc;
	if(_plik.peek() == ',')
	{
		std::string tmp;
		_plik >> tmp;
		tmp = tmp.substr(1,tmp.length()-1);
		double w2 = atof(tmp.c_str());
		for(unsigned i = 0; i < tmp.length(); i++)
			w2 /= 10;
		wartosc += w2;
	}
	if(wartosc == 0)
	{
		ZerowaWartosc wyjatek(tmp);
		throw wyjatek;
	}
}
void Wejscie::poczatek()
{
	_plik.clear();
	_plik.seekg(0);
}
bool Wejscie::eof()
{
	return _plik.eof();
}